package org.jflame.captcha;

import org.jflame.captcha.validator.Verifiable;

/**
 * 验证码表示类. 一个验证码包含一个用于验证的属性和一个用于展示的属性(即前端展示需要的属性)
 * 
 * @author charles.zhang
 * @param <V> 可验证属性类型
 * @param <D> 展示属性类型
 */
public class Captcha<V extends Verifiable<V>,D> {

    private V verifiable;// 用于验证的属性
    private transient D display;// 用于展示的属性

    public Captcha(V verifiablePart) {
        this.verifiable = verifiablePart;
    }

    public Captcha(V verifiablePart, D displayable) {
        this.verifiable = verifiablePart;
        this.display = displayable;
    }

    public final V getVerifiable() {
        return verifiable;
    }

    /*public void setDisplay(D displayable) {
        this.display = displayable;
    }*/

    public D getDisplay() {
        return display;
    }

    /**
     * 校验验证码
     * 
     * @param input
     * @return
     */
    public boolean verify(V input) {
        return verifiable.verify(input);
    }

}
